package ru.pb.game.network.engine.client.packets.sendable;

import ru.pb.game.network.engine.client.packets.GameServerToClientPacket;
import ru.pb.game.objects.model.clan.Clan;
import ru.pb.game.objects.model.players.Player;
import ru.pb.game.objects.model.room.Room;
import ru.pb.global.data.model.ClanInfo;

/**
 * Пакет обновления информации о слотах, кланах в комнате и в бою
 * 0xE02 Отсылается сразу как нажимаеш кнопку START
 * 
 * @author DarkSkeleton
 * @version 1.00
 */
public class opcode_3586_ACK extends GameServerToClientPacket
{
	private Room _room;

	public opcode_3586_ACK(Room _r)
	{
		_room = _r;
	}

	@Override
	public void writeImpl()
	{
		writeH(3586);
		writeD(_room.getLeader().getSlot()); // Слот лидера

		for(int i = 0; i < 16; i++)
		{
			Player p = _room.getPlayerBySlot(i);
			ClanInfo c = p != null ? p.getPlayerInfos().getClanInfo() : null;

			writeC(_room.getSlotState(i));
			writeC(p != null ? p.getPlayerInfos().getRank() : 0); // Ранг
			writeB(new byte[9]);
			writeC(p != null ? c.getClanLogo().getLogo1() : 255); // иконка клана
			writeC(p != null ? c.getClanLogo().getLogo2() : 255); // иконка клана
			writeC(p != null ? c.getClanLogo().getLogo3() : 255); // иконка клана
			writeC(p != null ? c.getClanLogo().getLogo4() : 255); // иконка клана
			writeC(p != null ? c.getClanLogo().getLogoColor() : 0); // иконка клана
			writeB(new byte[6]);
			writeS(p != null ? c.getClanName() : "", Clan.NET_CLAN_NAME_SIZE);
			writeH();
			writeC();
		}
	}
}